前面介紹了介面和抽象類別,是不是覺得兩者很像有點分不太出來什麼時候要用哪一個呢?
今天就幫大家整理這兩種類別相似及相異之處吧
介面 | 抽象類別 | |
---|---|---|
不能被實例化 | V | V |
抽象方法 | V | V |
預設方法 | V | |
普通方法 | V | |
靜態方法 | V | |
靜態常數 | V | V |
普通變數 | V | |
建構子 | V | |
初始化區域 | V |
介面和抽象類別之間的差別非常大,這種差別主要體現在二者設計目的。下面具體分析二者的差别:
介面
作為系統與外界交互的視窗,介面體現的是一種規範
。
對於介面的實作者而言:介面規定了實作者必須向外提供哪些服務(以方法的形式來提供)
對於介面的呼叫者而言:介面規定了呼叫者可以呼叫哪些服務,以及如何呼叫這些服務 (就是如
何來呼叫方法)。
當在一個程式中使用介面時,介面是多個模組間的耦合標準;
當在多個應用程式之間使用介面時,介面是多個程式之間的通訊標準。
從某種程度上來看,介面類似於整個系統的 「總綱」,它制定了系統各模組應該遵循的標準,因此一個系統中的介面不應該經常改變。一旦介面被改變,對整個系統甚至其他系統的影響將是輻射式的,導致系統中大部分類別都需要改寫。
抽象類別
抽象類別作為系統中多個子類別的共同父類別,它所體現的是一種範本式設計
。抽象類别作為多個子類別的抽象父類别,可以被當成系統實作過程中的中間產品,這個中間產品已經實作了系統的部分功能(那些己經提供實作的方法),但這個產品依然不能當成最終產品,必須有更進一步的完善。